#ifndef _OPERACION_CREAR_INDICE_SEC_H_
#define _OPERACION_CREAR_INDICE_SEC_H_

/**********************************************************************
 *	operacionCrearIndSec.h
 * 
 *  Descripcion: Clase que define la operacion del tipo Crear con 
 *  indice Secundario.
 * *******************************************************************/

#include <string>
#include "operacionCrear.h"
#include "debugger.h"
#include "logger.h"
#include "tipo_struct.h"
#include "parser.h"
#include "archivosFactory.h"
#include "excep_parser_sintaxis.h"
#include "excep_sintaxis_estructura_crear.h"
#include "funcProcStructCrear.h"
#include "funcProcAtomCrear.h"
#include "indicesFactory.h"

class OperacionCrearIndSec : public Operacion {
	
	protected:
		ArchivoDatos * arch_maestro;
		IndiceSec * arch_sec;
		std::string formato_archivo_primario;
		unsigned int num_campo_sec;
		
		/*
		 * Constructor
		 */
		OperacionCrearIndSec(ArchivoDatos * a, IndiceSec * ind_sec, std::string& formato_maestro, unsigned int num );
		
		static std::string get_formato_sec(std::string formato, int pos);
		
		static void validar_ind_sec(ArchivoDatos * maestro, std::string formato, int num_campo_sec);
						
	public:
		
		static Operacion * construir(std::string param);
		
		~OperacionCrearIndSec();
		
		void ejecutar(Modelo *modelo);	
	
};

#endif

